Managing services in networked environments often may involve acquiring information from multiple diverse sources. The information can be collected from the sources and processed to determine whether or not the current state of the service conforms to a desired policy or set of policies. If the state does not conform to one or more policies, changes to a service's configuration or to a resource level may be made.
Examples of diverse data sources from which information may be acquired include: live performance data from applications and operating systems in a network environment, historical business performance data, application and operating system logs, Configuration Management Databases (CMDB), application configuration models (e.g. SAP system landscape models, etc.), infrastructure models, customer data including Customer Relationship Management system (CRM) and billing data, and so forth.
A common approach to collecting data from various data sources is to write specific integration code to extract data from each particular data source. The data can then be presented as a fixed model in which relationships between the components of the model are fixed by the integration code. However, writing code for each data source can be time consuming, error prone, and expensive. A model in which the relationship between components is fixed a priori is inflexible. Such a model is unlikely to be suitable for a wide variety of management applications because systems and administrators cannot always predict which information or relationships are going to be needed by management applications and policies. This means that management applications have to do complex processing on the data and/or model to deduce the relationships of interest to the management application. Writing code to do this processing can also be time consuming, error prone, and expensive.